<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="fr">
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="created" content="2018-10-23T06:18:10.521000000">
    <meta name="changed" content="2019-01-16T17:28:04.263000000">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="fr">
    <title>
      Tester de multiples fichiers
    </title>
    <link rel="stylesheet" type="text/css" href="../../style.css">
  </head>
  <body>
    <div class="maindiv">
      <h1>
        Tester de multiples fichiers
      </h1>
      <p>
        Dans l'exemple d'une classe, vous aurez un certain nombre de fichiers à tester pour leur équivalence et vous ne désirez pas parcourir le résultat de chacune des solutions proposées par les étudiants.
      </p>
      <h2>
        Construire la comparaison dans le circuit
      </h2>
      <p>
        Une approche consiste à construire un circuit de test qui effectue directement la comparaison. Ici, nous créons un circuit supplémentaire de test qui englobe le circuit à tester. Dans notre circuit global, nous incluons à la fois le sous-circuit de référence <tt><b>master.circ</b></tt> et le sous-circuit à tester situé directement dans le circuit imbriqué. Nous le connectons de manière à ce qu’il n’y ait qu’une sortie, c’est-à-dire 1 tant que les deux sous-circuits concordent.
      </p>
      <blockquote>
        <img class="notscal" src="../../../../img-guide/verify-adder-test2.png" alt="#########">
      </blockquote>
      <p>
        Maintenant, nous pouvons simplement lancer Logisim en remplaçant chaque fichier de requête. Pour toute solution correcte, la seule sortie sera "1".
      </p>
      <h2>
        Utilisation de la redirection et des scripts shell
      </h2>
      <p>
        Si vous êtes assez à l'aise avec la ligne de commande, vous pouvez créer votre propre script shell pour y parvenir. Ici, nous utiliserons la redirection (l'opérateur &gt;) pour enregistrer la sortie de chaque circuit dans un fichier. Par exemple, nous pourrions émettre les deux commandes suivantes pour collecter la sortie du circuit maître et du circuit de requête.
      </p>
      <blockquote>
        <div class=forcode>
          <tt>java -jar logisim-evolution.jar test.circ -tty table &gt; out-master.txt</tt>
        </div>
        <div class=forcode>
          <tt>java -jar logisim-evolution.jar test.circ -tty&nbsp;table -sub master.circ query.circ &gt; out-query.txt</tt>
        </div>
      </blockquote>
      <p>
        Nous avons maintenant créé deux fichiers différents. Nous pouvons ensuite comparer les deux fichiers de sortie en utilisant un programme conçu à cet effet. Sous Linux ou MacOS X, vous souhaiterez peut-être utiliser les utilitaires de ligne de commande <b>cmp</b> ou <b>diff</b>. Sous Windows, vous souhaiterez peut-être utiliser l'utilitaire en ligne de commande <b>fc</b> or l'utilitaire WinMerge.
      </p>
      <p>
        Pour traiter plusieurs fichiers de requête, vous souhaitez créer un programme simple tel qu'un script shell pour parcourir chaque fichier et comparer les résultats. Voici comment je le ferais sous Linux <b>bash</b>:
      </p>
      <blockquote>
        <tt>RUN_TEST="java -jar logisim-evolution.jar test.circ -tty table"<br>
        ${RUN_TEST} &gt; out-master.txt<br>
        for QUERY_FILE in query*.circ<br>
        do<br>
        &nbsp;&nbsp;if&nbsp;${RUN_TEST}&nbsp;-sub&nbsp;master.circ&nbsp;${QUERY_FILE}&nbsp;|&nbsp;cmp&nbsp;-s&nbsp;out-master.txt<br>
        &nbsp;&nbsp;then<br>
        &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"${QUERY_FILE}&nbsp;OK"<br>
        &nbsp;&nbsp;else<br>
        &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"${QUERY_FILE}&nbsp;different"<br>
        &nbsp;&nbsp;fi<br>
        done</tt>
      </blockquote>
      <p>
        <b>Suite:</b> <a href="test.html">Tester avec des vecteurs de test</a>.
      </p>
    </div>
  </body>
</html>
